והמחלקה html של laravel3, ככה שב view אני מכניס שורה כזאת:
ואז מודפס כפתור לייק.
עכשיו אני רוצה לאפשר בפאנל ניהול להפעיל ולכבות את התוסף פייסבוק,
חשבתי לעשות בדיקה ב view אם התוסף פעיל ורק אז להדפיס את הלייק, משהו כזה:
{{ XFBML::like() }}
@endif
אבל הגעתי למצב שזה מופיע ביותר מדי מקומות וצימצמתי את זה למחלקה, ככה שאם התוסף "מכובה" לא מודפס כלום, ושוב יש אותה בעיה, יש את התנאי הזה ביותר מדי מקומות במחלקה..
יש למישהו רעיון איך אני נותן את התנאי הזה במקום אחד והמחלקה "תפסיק לעבוד"?
חשבתי לתת prefix לשמות של הפונקיות ולקרוא להם בתוך __callStatic בתנאי שהמחלקה פעילה
משהו כזה:
{
if( ! static::disabled()) {
$method = "enable_prefix_{$method}";
return call_user_func_array(array(static, $method), $arguments);
}
}
אבל זאת לא נראת לי דרך לעבוד, זה סתם מכער את המחלקה ואני בטוח שמישהו כבר עבר את הסרט הזה ומצא פתרון יותר טוב..
אז פתרונות נוספים?
6 תשובות
אופציה נוספת היא לעשות מחלקה נוספת שממשת את אותו אינטרפייס אבל המטודות שלה לא עושות שום דבר ובזמן ריצה להכניס לקונטיינר או מופע של המחלקה הראשונה או של השניה ולהשתמש במופע הזה במקום.
עוד אופציה היא לעטוף את המחלקה XFBML במחלקה נוספת שבה תימצא המטודה __callStatic שכתבת. ככה שבמחלקה האמיתית השמות של המטודות יהיו נורמאליות ולא עם enable_prefix
חוץ מזה, למה שהמטודות יהיו סטטיות?
תודה! אני אעטוף את המחלקה במחלקה נוספת.
..המטודות סטטיות כי זה מבוסס על המחלקה HTML של laravel3..
לפי איך שזה נשמע לי, אני לא חושב שהמתודות של המחלקה הזאת (XFBML) צריכות להיות סטטיות. הן אמורות לפעול בהתאם להגדרות הייחודיות באותו סקריפט, למשל כתובת URL של מאמר, ולעשות את זה סטטי יהיה פשוט שימוש שגוי מבחינתי.
גם אם זה מבוסס על מחלקה שהיא כולה סטטית - אין שום סיבה שמחלקה שלך תהיה גם סטטית.
מה מפריכ לך מהמחלקה שלך לקרוא למטודות של מחלקה אחרת, לא משנה אם סטטיות או לא ?
אני בכלל נגד דברים סטטים. לחלוטין.
למה, אלכס? אף פעם לא הבנתי את הגישה הזאת שלך. יש מתודות שלא קשורות לאובייקט מסוים, אלא למחלקה עצמה.